/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"DD84F66E-CFF7-490A-8A1D-9E054E7A3E7A",variableType:4}
 */
var fTipoProveedor = null;

/**
 *
 * @properties={typeid:24,uuid:"DA5D3156-D9CB-45BE-AD4C-E3629E6AFA71"}
 */
function buscar()
{
	inicializaTotales()
	elements.tab_diario.removeAllTabs()
	if ((globals.gFechaDesde != null) && (globals.gFechaHasta != null))
	{
		var d1 = globals.gFechaDesde
		d1.setHours(00);
		d1.setMinutes(00);
		d1.setSeconds(00);
		d1.setMilliseconds(0)
		
		var d2 = globals.gFechaHasta
		d2.setHours(23);
		d2.setMinutes(59);
		d2.setSeconds(59);
		d2.setMilliseconds(996)
		
		var query = 'SELECT cc.fecha_presentacion, cc.cod_mov, cc.comprob_completo, cc.proveedor_id, p.cuit,p.tipo_iva_id, '+ 
						'cc.neto_impresion, cc.iva_impresion, cc.porc_impresion, cc.neto_no_gravado_signo, cc.itc_signo, '+
						'cc.ib_percep_signo, cc.iva_percep_signo, cc.ganancias_percep_signo, cc.importe_signo, (select SUM(v.importe) from ctacte_pr_varios "v" where v.ctacte_pr_id = cc.ctacte_pr_id group by v.ctacte_pr_id) as "otros" '+
						'FROM ctacte_pr as "cc" '+
						'INNER JOIN proveedor as "p" ON cc.proveedor_id = p.proveedor_id '+
						'INNER JOIN tab_mov_pr as "tb" ON cc.cod_mov = tb.ctacte_mov_pr_id '+
						'WHERE tb.diario_compras = 1 and cc.userv_id = ? and cc.fecha_presentacion BETWEEN ? and ? '
		var args = [globals.gUservID,d1,d2]
		if (fTipoProveedor != null)
		{
			query += 'and p.tipo = ? '
			args.push(fTipoProveedor)
		}
		var $ds = databaseManager.getDataSetByQuery('infocom',query,args,-1)
		
		if ($ds.getMaxRowIndex() == 0)
		{
			globals.DIALOGS.showWarningDialog('Aviso','No se encontraron movimientos con esas condiciones','OK')
		}
		else
		{	
			var $nombre = 'diario_compras_ds_2'
			var $frm = solutionModel.getForm($nombre)
			var $tipos = [JSColumn.DATETIME, JSColumn.INTEGER, JSColumn.TEXT, JSColumn.INTEGER, JSColumn.TEXT, JSColumn.INTEGER, JSColumn.NUMBER,
			              JSColumn.NUMBER, JSColumn.TEXT, JSColumn.NUMBER, JSColumn.NUMBER, JSColumn.NUMBER, JSColumn.NUMBER, JSColumn.NUMBER, JSColumn.NUMBER, JSColumn.NUMBER]
			$frm.dataSource = $ds.createDataSource('DIARIO_C',$tipos)
			
			forms.diario_compras_ds_2_tot.queryTotales()
			forms.diario_compras_ds_2_conceptos.queryTotales()
			
			globals.cambiarEstilo($nombre)
			forms[$nombre].controller.recreateUI()
			elements.tab_diario.addTab(forms[$nombre]);
			forms[$nombre].foundset.sort('fecha_presentacion asc, cod_mov asc, comprob_completo asc')
			forms.diario_compras_ds_2_tot.queryTotales()
			forms.diario_compras_ds_2_conceptos.queryTotales()
			forms[$nombre].elements.tab_concepto.addTab(forms.diario_compras_ds_2_conceptos)
			globals.cambiarEstilo('diario_compras_ds_2_conceptos')
/*			var $params 		= forms.diario_compras_ds_2_tot.queryTotales()
			$params.userv 		= uservs_to_uservs.razon_social
			$params.pUservId 	= globals.gUservID
			$params.pTitulo		= 'Diario de Compras Desde ' + utils.dateFormat(globals.gFechaDesde,'dd-MM-yyyy') + ' Hasta ' + utils.dateFormat(globals.gFechaHasta,'dd-MM-yyyy')
			$params.pFechaDesde	= globals.gFechaDesde
			$params.pFechaHasta = globals.gFechaHasta
			
			globals.metodoJasper('impresion','proveedores/diario_compras.jasper','Diario_compras','infocom',$params)*/
		}
	}
	else
	{
		globals.DIALOGS.showWarningDialog('Aviso','Por favor complete todos los datos','OK')
	}
}

/**
 *
 * @properties={typeid:24,uuid:"56E278B4-B8E9-493E-81DF-1684A8499757"}
 */
function iniciar() 
{
	databaseManager.revertEditedRecords();
	databaseManager.setAutoSave(true);
	globals.gFechaHasta = application.getServerTimeStamp()
	globals.gFechaDesde = application.getServerTimeStamp()
	globals.gFechaDesde = globals.gFechaDesde.setDate (globals.gFechaHasta.getDate() - 30);
}

/**
 * @properties={typeid:24,uuid:"3EC639AF-CFAD-4640-9FE0-82F451A505D9"}
 */
function inicializaTotales()
{
	forms.diario_compras_ds_2_tot.porc_1                = 0
	forms.diario_compras_ds_2_tot.porc_2                = 0
	forms.diario_compras_ds_2_tot.porc_3                = 0
	forms.diario_compras_ds_2_tot.porc_4                = 0
	forms.diario_compras_ds_2_tot.t_ib_percep           = 0
	forms.diario_compras_ds_2_tot.t_importe             = 0
	forms.diario_compras_ds_2_tot.t_itc                 = 0
	forms.diario_compras_ds_2_tot.t_iva                 = 0
	forms.diario_compras_ds_2_tot.t_iva_1               = 0
	forms.diario_compras_ds_2_tot.t_iva_2               = 0
	forms.diario_compras_ds_2_tot.t_iva_3               = 0
	forms.diario_compras_ds_2_tot.t_iva_4               = 0
	forms.diario_compras_ds_2_tot.t_iva_percep          = 0
	forms.diario_compras_ds_2_tot.t_neto                = 0
	forms.diario_compras_ds_2_tot.t_neto_1              = 0
	forms.diario_compras_ds_2_tot.t_neto_2              = 0
	forms.diario_compras_ds_2_tot.t_neto_3              = 0
	forms.diario_compras_ds_2_tot.t_neto_4              = 0
	forms.diario_compras_ds_2_tot.t_neto_exento         = 0
	forms.diario_compras_ds_2_tot.t_neto_monotributo    = 0
	forms.diario_compras_ds_2_tot.t_neto_no_gravado		= 0
}

/**
 * Perform the element default action.
 *
 * @properties={typeid:24,uuid:"164BFAEF-656C-44F3-9EBD-24CE92FC7331"}
 */
function imprimir(modo) {
	var $impresion 	= 'diario_compras_ds_imp'
	var $frm_imp	= solutionModel.getForm($impresion)
	var $consulta	= 'diario_compras_ds_2'
	var $frm_cons	= solutionModel.getForm($consulta)
	
	$frm_imp.dataSource = $frm_cons.dataSource
	forms[$impresion].controller.recreateUI()
	forms[$impresion].foundset.sort('fecha_presentacion asc, cod_mov asc, letra asc, sucural asc ,nro_factura asc')
	pasaTotales()
	if (modo == 'preview')
		forms[$impresion].controller.showPrintPreview(false)
	else
	{
		var type = application.getApplicationType();
		if (type == 5)
			forms[$impresion].controller.showPrintPreview(false)
		else
		{
			globals.metodoPdf($impresion,gidformactual_to_forms.titulo,true)
		}
	}
}

/**
 * @properties={typeid:24,uuid:"8E44555A-120B-4449-9C2A-7A2C1999FB0F"}
 */
function imprimir_preview()
{
	imprimir('preview')
}

/**
 * @properties={typeid:24,uuid:"2C52C41D-D04B-45F6-9E57-F62B2064277A"}
 */
function imprimir_pdf()
{
	imprimir('pdf')
}

/**
 * @properties={typeid:24,uuid:"54689A51-A14D-46F4-9AFB-880CF9B47386"}
 */
function pasaTotales()
{
	var $orginial 	= 'diario_compras_ds_2_tot'
	var $impresion	= 'diario_compras_ds_tot'
		
	var $vars		= solutionModel.getForm($impresion).getVariables()
	for (var i = 0 ; i < $vars.length ; i++)
	{
		forms[$impresion][$vars[i].name] = forms[$orginial][$vars[i].name]
	}
	
	$impresion 		= 'diario_compras_ds_conceptos'
	var $frm_imp	= solutionModel.getForm($impresion)
	var $consulta	= 'diario_compras_ds_2_conceptos'
	var $frm_cons	= solutionModel.getForm($consulta)
	
	$frm_imp.dataSource = $frm_cons.dataSource
	
	forms[$impresion].controller.recreateUI()
}

/**
 * @properties={typeid:24,uuid:"B7DE229B-EE5D-4EBF-BEAE-D20EAC8AB165"}
 */
function pasarXls() {
	pasarExcel('.xls','<TABLE CELLPADDING="1" CELLSPACING="0" BORDER="0">','<tr><td>','','</td><td>','</td></tr>','</table>')
}

/**
 * @param {String} extension
 * @param {String} comienzo_archivo
 * @param {String} comienzo_linea
 * @param {String} marca_txt
 * @param {String} separador
 * @param {String} fin_linea
 * @param {String} fin_archivo
 * 
 * @properties={typeid:24,uuid:"28220D92-A2DF-4FDE-8EC7-34D1D904C561"}
 */
function pasarExcel(extension,comienzo_archivo,comienzo_linea,marca_txt,separador,fin_linea,fin_archivo)
{
	var $html 		= registros(comienzo_linea,marca_txt,separador,fin_linea)
	var $totales	= totales(comienzo_linea,marca_txt,separador,fin_linea)
	var $conceptos 	= totalesConcepto(comienzo_linea,marca_txt,separador,fin_linea)
	/** @type {Date}*/
	var fecha = application.getServerTimeStamp()
	fecha = utils.dateFormat(fecha,'dd-MM-yyyy hh-mm-ss')
	var $nombre = 'c:/diario_compras ' + fecha + extension
	var jsFile
	if (application.getApplicationType() == APPLICATION_TYPES.WEB_CLIENT)
	{
		jsFile = plugins.file.createFile($nombre)
	}
	else
	{
		jsFile = plugins.file.showFileSaveDialog($nombre)
	}
	if (jsFile)
	{
		var fw = new Packages.java.io.FileWriter(jsFile.getAbsolutePath());
		var bw = new Packages.java.io.BufferedWriter(fw);
		if (comienzo_archivo != '')
		{
			bw.write(comienzo_archivo,0,comienzo_archivo.length)
			bw.newLine()
		}
		//TITULO + NOMBRE Y CUIT DE LA EMPRESA
		var linea = comienzo_linea + gidformactual_to_forms.titulo + fin_linea
		bw.write(linea,0,linea.length)
		bw.newLine()
		linea = comienzo_linea + usuarios_to_uservs.descripcion + fin_linea
		bw.write(linea,0,linea.length)
		bw.newLine()
		linea = comienzo_linea + usuarios_to_uservs.cuit + fin_linea
		bw.write(linea,0,linea.length)
		bw.newLine()
		bw.newLine()
		
		bw.write($html,0,$html.length)
		bw.newLine()
		bw.write($totales,0,$totales.length)
		bw.newLine()
		bw.write($conceptos,0,$conceptos.length)
		if (fin_archivo != '')
		{
			bw.write(fin_archivo,0,fin_archivo.length)
		}
		bw.close()
		fw.close()
		application.executeProgram("rundll32.exe", ["url.dll,FileProtocolHandler", jsFile.getAbsolutePath()])
	}
}

/**
 * @param {String} comienzo_linea
 * @param {String} marca_txt
 * @param {String} separador
 * @param {String} fin_linea
 * 
 * @properties={typeid:24,uuid:"2C2A0EB6-71BB-4131-BA65-1BC7A9E0174F"}
 */
function registros(comienzo_linea,marca_txt,separador,fin_linea)
{
	var $frm1 = 'diario_compras_ds_2'
	var elems = forms[$frm1].elements.allnames
	var $html = comienzo_linea
	/**@type {Array<String>} */
	var titulos = new Array()
	for (var i = 0 ; i < elems.length ; i++)
	{
		if (elems[i].indexOf('tab_') == -1)
		{
			titulos.push(forms[$frm1].elements[elems[i]].titleText)
			$html += marca_txt + forms[$frm1].elements[elems[i]].titleText + marca_txt + separador
		}
	}
	
	$html += fin_linea
	//REGISTROS
	var $cant = databaseManager.getFoundSetCount(forms.diario_compras_ds_2.foundset)
	for (var j = 1 ; j <= $cant ; j++)
	{
		forms.diario_compras_ds_2.controller.setSelectedIndex(j)
		$html += comienzo_linea
		for (var k = 0 ; k < elems.length ; k++)
		{
			if (elems[k].indexOf('tab_') == -1)
			{
				forms.diario_compras_ds_2.elements[elems[k]].requestFocus()
				forms.diario_compras_ds_2.elements[elems[k]].selectAll()
				var $campo = forms.diario_compras_ds_2.elements[elems[k]].getSelectedText()
				$html += marca_txt + $campo + marca_txt + separador
			}
		}
		$html += fin_linea
	}
	forms.diario_compras_ds_2.controller.setSelectedIndex(1)	
	return $html
}

/**
 * @param {String} comienzo_linea
 * @param {String} marca_txt
 * @param {String} separador
 * @param {String} fin_linea
 * 
 * @properties={typeid:24,uuid:"C7D39C74-FFFF-4BEA-8299-5C5026C39E55"}
 */
function totales(comienzo_linea,marca_txt,separador,fin_linea)
{
	var $texto = comienzo_linea + marca_txt + 'TOTALES' + marca_txt + fin_linea
	for (var i = 1 ; i <= 4 ; i++)
	{
		$texto += comienzo_linea + marca_txt + 'Neto Gravado ' + forms.diario_compras_ds_2_tot['porc_'+i] 	+ marca_txt + separador + marca_txt + utils.numberFormat(forms.diario_compras_ds_2_tot['t_neto_'+i],'0.00')+ marca_txt  + fin_linea
		$texto += comienzo_linea + marca_txt + 'IVA ' + forms.diario_compras_ds_2_tot['porc_'+i] 			+ marca_txt + separador + marca_txt + utils.numberFormat(forms.diario_compras_ds_2_tot['t_iva_'+i],'0.00') + marca_txt 	+ fin_linea
	}
	$texto += comienzo_linea + marca_txt + 'Percepciones IVA' 	+ marca_txt + separador + marca_txt + utils.numberFormat(forms.diario_compras_ds_2_tot.t_iva_percep,'0.00') 		+ marca_txt + fin_linea
	$texto += comienzo_linea + marca_txt + 'Percepciones IB' 	+ marca_txt + separador + marca_txt + utils.numberFormat(forms.diario_compras_ds_2_tot.t_ib_percep,'0.00')			+ marca_txt + fin_linea
	$texto += comienzo_linea + marca_txt + 'Impesto Gas Oil' 	+ marca_txt + separador + marca_txt + utils.numberFormat(forms.diario_compras_ds_2_tot.t_itc,'0.00')				+ marca_txt + fin_linea
	$texto += comienzo_linea + marca_txt + 'Neto No Gravado' 	+ marca_txt + separador + marca_txt + utils.numberFormat(forms.diario_compras_ds_2_tot.t_neto_no_gravado,'0.00')	+ marca_txt + fin_linea
	$texto += comienzo_linea + marca_txt + 'Monotributo' 		+ marca_txt + separador + marca_txt + utils.numberFormat(forms.diario_compras_ds_2_tot.t_neto_monotributo,'0.00')	+ marca_txt + fin_linea
	$texto += comienzo_linea + marca_txt + 'Exento' 			+ marca_txt + separador + marca_txt + utils.numberFormat(forms.diario_compras_ds_2_tot.t_neto_exento,'0.00')		+ marca_txt + fin_linea
	$texto += comienzo_linea + marca_txt + 'IVA' 				+ marca_txt + separador + marca_txt + utils.numberFormat(forms.diario_compras_ds_2_tot.t_iva,'0.00')				+ marca_txt + fin_linea
	$texto += comienzo_linea + marca_txt + 'Neto' 				+ marca_txt + separador + marca_txt + utils.numberFormat(forms.diario_compras_ds_2_tot.t_neto,'0.00')				+ marca_txt + fin_linea
	$texto += comienzo_linea + marca_txt + 'Importe' 			+ marca_txt + separador + marca_txt + utils.numberFormat(forms.diario_compras_ds_2_tot.t_importe,'0.00')			+ marca_txt + fin_linea

	return $texto
}

/**
 * @param {String} comienzo_linea
 * @param {String} marca_txt
 * @param {String} separador
 * @param {String} fin_linea
 * 
 * @properties={typeid:24,uuid:"359501D1-1303-4FFC-A5C2-17CD3B2364B3"}
 */
function totalesConcepto(comienzo_linea,marca_txt,separador,fin_linea)
{
	var $texto = comienzo_linea + marca_txt + 'CONCEPTO' + marca_txt + separador + marca_txt + 'TOTAL'+ marca_txt + fin_linea
	for (var i = 1 ; i <= forms.diario_compras_ds_2_conceptos.foundset.getSize() ; i++)
	{
		forms.diario_compras_ds_2_conceptos.controller.setSelectedIndex(i)
		forms.diario_compras_ds_2_conceptos.elements.fld_concepto.requestFocus()
		forms.diario_compras_ds_2_conceptos.elements.fld_concepto.selectAll()
		forms.diario_compras_ds_2_conceptos.elements.fld_concepto.getSelectedText()
		$texto += comienzo_linea + marca_txt + forms.diario_compras_ds_2_conceptos.elements.fld_concepto.getSelectedText() + marca_txt + separador
		$texto += marca_txt + utils.numberFormat(forms.diario_compras_ds_2_conceptos.total,'0.00') + marca_txt + fin_linea
	}
	return $texto
}

/**
 * @properties={typeid:24,uuid:"1C638DA2-8217-4131-A640-A07C038A729A"}
 */
function pasarCsv() {
	pasarExcel('.csv','','','"',';','\n','')
}
